package com.zx._01_基础._013_io;

import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;


public class 文件的监听2 {

    public static void main(String[] args) throws Exception {
        FileMonitor fileMonitor = new FileMonitor("D://datashare", 1000);
        fileMonitor.start();
    }

    private static class FileMonitor implements FileAlterationListener {

        private FileAlterationMonitor monitor = null;


        public FileMonitor(String path, long interval) throws Exception {
            monitor = new FileAlterationMonitor(interval);
            FileAlterationObserver observer = new FileAlterationObserver(new File(path));//添加监听路径
            monitor.addObserver(observer);
            observer.addListener(this);
        }

        public void stop() throws Exception {
            monitor.stop();
        }

        public void start() throws Exception {
            monitor.start();
        }

        ///////////////////////////////////监听触发的方法////////////////////////////////////////////////////////
        @Override//监听开始扫描
        public void onStart(FileAlterationObserver observer) {
            System.out.println("#####################################################");
            System.out.println("监听开始对路径扫描");
        }

        ///////////////////////////////////文件夹操作//////////////////////////////////////////////////////////////////////

        @Override//监听开始结束
        public void onStop(FileAlterationObserver arg0) {

        }

        /**
         * 发现创建了新的文件夹
         * 一次扫描中，如果发现多个变化，本方法自动被多次调用
         */
        @Override
        public void onDirectoryCreate(File directory) {

        }

        /**
         * 发现文件夹的状态发生了变化
         * 一次扫描中，如果发现多个变化，本方法自动被多次调用
         */
        @Override
        public void onDirectoryChange(File directory) {

        }

        ///////////////////////////////////文件操作//////////////////////////////////////////////////////////////////////

        /**
         * 发现文件夹被删除
         * 一次扫描中，如果发现多个变化，本方法自动被多次调用
         */
        @Override
        public void onDirectoryDelete(File directory) {

        }

        /**
         * 发现新的文件
         * 一次扫描中，如果发现多个变化，本方法自动被多次调用
         */
        @Override
        public void onFileCreate(File file) {

        }

        /**
         * 发现文件被修改
         * 一次扫描中，如果发现多个变化，本方法自动被多次调用
         */
        @Override
        public void onFileChange(File file) {

        }

        /**
         * 发现文件被删除
         * 一次扫描中，如果发现多个变化，本方法自动被多次调用
         */
        @Override
        public void onFileDelete(File file) {

        }
    }
}
